<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
 * Realiza a interacao entre a aplicacao e a tabela de clientes no banco de dados
 * 
 * @package application/models/adm
 * @name Usuario_model
 * @author Joao Claudio Dias Araujo <joao.araujo@tellks.com.br>
 */
class Cliente_model extends CI_Model{
    
    private $tabela;
    
    function __construct() {
        parent::__construct();
        
        $this->tabela = 'cliente';
    }
            
    /**
     * Busca todos os clientes do banco de dados
     * 
     * @return array
     */
    function get_all(){
        
        $clientes = $this->db->get($this->tabela);
        
        if($clientes->num_rows() > 0){
            
            return $clientes->result();
        }
        else {
            
            return array();
        }
    }
    
    /**
     * Busca os dados de um cliente pelo seu ID
     * 
     * @param int $id ID do grupo
     * @return mixed
     */
    function get_by_id($id){
        
        $this->db->select('cli.*, c.uf');
        
        $this->db->from($this->tabela .  ' AS cli');
        
        $this->db->join('cidade AS c', 'c.id = cli.cidade', 'LEFT');
        
        $this->db->where('cli.id', $id);
        
        $resultado = $this->db->get();
        
        if($resultado->num_rows() > 0){
            
           return  $resultado->row(0);
            
        }else{
            
            return false;
        }
        
    }
         
    /**
     * Insere um cliente no banco de dados
     * 
     * @param sdtClass Object $cliente Objeto contendo os dados do cliente
     * @return boolean
     */
    function inserir($cliente){
                
        $this->db->insert($this->tabela, $cliente);
        
        $inseriu_cliente = (bool)  $this->db->affected_rows();
        
        $id = $this->db->insert_id();
        
        return($inseriu_cliente);
    }
    
    /**
     * atualiza um cliente no banco de dados
     * 
     * @param sdtClass Object $cliente Objeto contendo os dados do cliente
     * @return boolean
     */
    function atualizar($cliente){
        
        $this->db->where('id', (int)$cliente->id);
        
        $this->db->update($this->tabela,$cliente);
        
        $atualizou_cliente = (bool)$this->db->affected_rows();
        
        
        return ($atualizou_cliente);}
    
    /**
     * Remove um cliente do banco de dados
     * 
     * @param int $id ID do cliente a ser removido
     * @return boolean
     */
    function remover($id){
        
        $this->db->where('id', (int)$id);
        
        $this->db->delete($this->tabela);
        
        return (bool)$this->db->affected_rows();
    }
    
    function get_by_email($email,$id = 0){
        
        $this->db->select('*');
        
        $this->db->from($this->tabela);
        
        $this->db->where('email',$email);
        
        if ($id > 0) {
            
            $this->db->where_not_in('id',$id);
        }
        
        $resultado = $this->db->get();
        if($resultado->num_rows() > 0){
            
            return $resultado->row(0);
        }else{
            return FALSE;
        }
    }
    
    function get_by_nome($nome){
        
        $this->db->select('c.*');
        $this->db->from('cliente AS c' );
        $this->db->like('nome', $nome);
        
        $resultado = $this->db->get();
        
        if($resultado->num_rows() > 0){
            
            return $resultado->result_array();
        }
        else {
            
            return array();
        }
    }
    
}